People are increasingly interacting with computers and other electronic devices in new and interesting ways. For example, various applications enable a user to take a picture of a product or item using a computing device and upload that picture to a service capable of identifying the product or item for the user. Other applications enable a user to provide input to a device through various motions, such as by making a simple hand gesture with respect to a device. Image recognition can be difficult to implement on consumer devices, however, particularly for mobile or portable computing devices that generally have relatively simple camera elements and limited processing capacity. In certain approaches, the amount of image processing can be reduced by separating foreground objects from an image background. In at least some approaches, this separating involves taking at least two pictures and subtracting out portions that do not change. If an object in the foreground moves between pictures, or is highlighted in one picture due to a flash, then that object will not appear substantially the same in both pictures, and thus can be identified relatively easily as the non-changing background will be substantially removed through the subtraction process.
Image subtraction approaches, however, generally rely on the fact that the background and other objects in a viewable range of a camera remain relatively static between the taking of consecutive pictures. If the background moves relative to the computing device, such as due to a movement of the computing device, portions of the background may not appear at substantially the same location in each of the subsequent pictures. Accordingly, the subtraction process may not adequately separate any foreground objects from the background. The process might then result in artifacts, false positives, or inconclusive determinations, or might at least require significantly more processing power to attempt to identify objects in the foreground of the pictures.